A computer system typically includes a central processing unit (CPU) coupled by communication pathways known as computer buses to various computer components, such as memory, input devices, and a video monitor. To enable the CPU to communicate with the computer components, the computer components must be configured to communicate in an organized manner. Typically, each computer device includes a set of configuration registers that store configuration data, such as data identifying the type and capabilities of the computer device. Some of the configuration data, such as the device type, is provided with the computer device by the device manufacturer. In addition, the CPU typically provides each computer device with additional configuration data that defines how the computer devices will interact with each other and with the CPU.
Virtually all computer devices utilize some memory address space, input/output (I/O) address space or both. When the computer system is turned on, the computer system must be configured so that each computer device's I/O and memory functions occupy mutually exclusive address ranges. After determining how much memory and I/O space a computer device requires, the CPU assigns the computer device I/O and/or memory address ranges that do not conflict with I/O and memory address ranges assigned to any other computer device of the computer system.
A block diagram of a typical prior art computer system 10, employing a hierarchical architecture of computer buses, is shown in FIG. 1. The computer system 10 includes a computer processor 12 coupled by a host bus 14 to a read-only memory (ROM) device 16, a host-PCI bridge 18 and a memory controller 20 coupled to a system memory module 22. Coupled to the host-PCI bridge 18 by a first Peripheral Component Interconnect (PCI) bus 24 are a PCI-ISA bridge 26, first PCI-PCI bridge 28, and second PCI-PCI bridge 30. The PCI-ISA bridge 26 couples the first PCI bus 24 to an industry standard architecture (ISA) bus 32 which is coupled to an input device 34 and a floppy drive 36. The first PCI-PCI bridge 28 couples the first PCI bus 24 to a second PCI bus 38, which is coupled to a video controller 40 and a hard drive 42. The second PCI-PCI bridge 30 couples the first PCI bus 24 to a third PCI bus 44, which is coupled to a network adapter 46 and a fax-modem 48.
When the computer system 10 is turned on, the processor 12 configures the computer system 10 based on computer instructions of basic input/output system (BIOS) routines 50 stored in the ROM device 16. The BIOS routines 50 are hardware-specific in that the manufacturer of the computer system 10 designs the BIOS routines specifically for the particular implementation of the computer system 10 being sold. As a result, any configuration of computer buses and computer devices can be employed without limiting the ability of the computer system to be configured by the BIOS routines 50. The BIOS is the only agent responsible for configuring the PCI-PCI bridges, because interrupts for each bus must be routed by the BIOS.
One drawback of configuring the computer system 10 using the hardware-specific BIOS routines 50 is that only computer devices designed according to the configuration rules implemented by the BIOS routines 50 can be added to the computer system 10. The PCI specification is being modified to allow the interrupt routing to be performed by the computer's operating system, such as Microsoft Windows.TM. and Microsoft Windows NT.TM.. As a result, the operating system must be allowed to configure PCI-PCI bridges using the configuration format defined by the "PCI-PCI Bridge Architecture Specification" issued by the PCI Special Interest Group on Apr. 5, 1994, which is incorporated herein by reference. Such changes to the PCI specification may reduce compatibility problems, but do not provide the operating system with a method of configuring computer systems that do not employ the traditional hierarchical architecture of the computer system 10 shown in FIG. 1.